#include "recboxitem.h"
#include "ui_recboxitem.h"

#include<QDebug>
#include<QPropertyAnimation>

RecBoxItem::RecBoxItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RecBoxItem)
{
    ui->setupUi(this);

    //安装事件拦截器 - 否则即使事件发生也不会触发
    ui->musicImageBox->installEventFilter(this);
}

RecBoxItem::~RecBoxItem()
{
    delete ui;
}

//设置推荐文本
void RecBoxItem::setRecText(const QString &text)
{
    ui->recBoxItemText->setText(text);
}
//设置推荐图片
void RecBoxItem::setRecImage(const QString &imagePath)
{
    QString style = "background-image:url("+imagePath+");";  // ui->recMusicImage->setPixmap(QPixmap(imagePath));这里不可行 要考虑之后的QJson 因为若干个recBoxItem的图片路径和文本
    ui->recMusicImage->setStyleSheet(style);
}


//拦截器
bool RecBoxItem::eventFilter(QObject *watched, QEvent *event)
{
    if(watched==ui->musicImageBox)
    {
        if(QEvent::Enter==event->type()) //event->type() 表示watch这个控件上发生了什么()   即**事件的类型**
        {

            //添加图片上移动画
            QPropertyAnimation* animation = new QPropertyAnimation(ui->musicImageBox,"geometry");
        //           参数:对那个控件使用,使用方式,父元素 这里没写第三个参数(没挂对象树上) 是因为会频繁进入出去 最好手动释放
            animation->setDuration(150);
            animation->setStartValue(QRect(9,9,ui->musicImageBox->width(),150));
            animation->setEndValue(QRect(9,0,ui->musicImageBox->width(),150));//ui->musicImageBox->height()
//关键帧方法 animation->setKeyValueAt(0,Rect());animation->setKeyValueAt(0.5,Rect());animation->setKeyValueAt(1,Rect());animal->setLoopCount(1);
            animation->setLoopCount(1);
            animation->start();

            connect(animation,&QPropertyAnimation::finished,this,[animation]()
            {
                delete animation;
            });
        }
            else if(QEvent::Leave==event->type())
        {
            //添加图片下移动画
            QPropertyAnimation* animation = new QPropertyAnimation(ui->musicImageBox,"geometry");
            animation->setDuration(150);
            animation->setStartValue(QRect(9,0,ui->musicImageBox->width(),ui->musicImageBox->height()));
            animation->setEndValue(QRect(9,9,ui->musicImageBox->width(),ui->musicImageBox->height()));
            animation->setLoopCount(1);
            animation->start();

            connect(animation,&QPropertyAnimation::finished,this,[=](){delete animation;});
        }
        return true;
    }
    else
    {
        return QObject::eventFilter(watched,event);
    }
}
